﻿#ifndef BASE_WAVE_WIDGET_H
#define BASE_WAVE_WIDGET_H


#include "src/wave/qcustomplot.h"

class QContextMenuEvent;
class ScrollModeController;
class BaseWaveWidget : public QCustomPlot {
  Q_OBJECT
public:
  explicit BaseWaveWidget(QWidget *parent = nullptr);
  virtual ~BaseWaveWidget() override = default;

  void InitChannel(int channel_number, const QVector<QColor>& channel_color); // 初始化通道

  void AddData(const int& channel, const double& temp_data); // 向指定通道添加数据
  void AddData(const int& channel, const double& key, const double& temp_data); // 向指定通道的指定位置添加数据
  void Clear(); // 全通道清空
  void Clear(int channel); // 指定通道清空

  uint32_t FindMaxDataLength(); // 找到最大数据长度
  void AutoScale_Y(); // Y轴自动缩放
  double y_max_value() const;
  double y_min_value() const;

private:
  int channel_number_ = 0; // ADC通道个数
  double y_max_value_ = INT_MIN; // 所有通道中的最大值
  double y_min_value_ = INT_MAX; // 所有通道中的最小值

  QVector<QColor> channel_color_ = {
    // 通道颜色
    QColor(0x00, 0x80, 0x00), // 深绿色
    QColor(0xdc, 0x14, 0x3c), // 深红色
    QColor(0x00, 0x8b, 0x8b), // 深青色
    QColor(0xda, 0xa5, 0x20), // 金色
    QColor(0x80, 0x00, 0x80), // 深紫色
    QColor(0x00, 0x00, 0x8b), // 深蓝色
    QColor(0xd2, 0x69, 0x1e), // 深橙色
    QColor(0x48, 0x3d, 0x8b) // 深紫蓝色
  };
};

#endif //BASE_WAVE_WIDGET_H
